Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2016, 23:59
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Автообновление параметра на странице???
Прошу помощи у людей разбирающихся в JS
Как реализовать автообновление показаний сети роутера
на данной странице:

Снимок.JPG

Чтобы обновление происходило в автоматическом режиме,раз в 1секунду,
без обновления самой страницы, и не затрагивая ее элементов,так сказать в фоновом режиме,не влияя на страницу!!!!И чтобы постоянно не тыкать в кнопку обновить при поиске сигнала.
Подскажите плиззз,что нужно поменять в скрипте(какой именно параметр)
"ткните носом" или если не трудно ПОПРАВЬТЕ скрипт,заранее спасибо!!!!


Вот JS-скрипт данной страницы: "deviceinformation.js"

// JavaScript Document
var g_device_array = [];
var g_device_config = {};
var g_device_info = {};
var g_device_single = '';
var g_device_mode_2g = 0;
var g_device_mode_3g = 2;
var g_device_mode_4g = 7;
var g_device_single = '';
var g_device_mode = '';

function getDeviceInfo() {
	getAjaxData('api/monitoring/status', function($xml) {
		var ret = xml2object($xml);
		if (ret.type == 'response') {
			G_MonitoringStatus = ret;
		}
	}, {
		sync: true
	});
	getAjaxData('api/device/signal', function($xml) {
		var ret = xml2object($xml);
		if (ret.type == 'response') {
			g_device_single = ret ;
			g_device_mode = parseInt(g_device_single.response.mode, 10) ;
		}
	}, {
		sync: true
	});
	getAjaxData('api/device/information', function($xml) {
		var device_ret = xml2object($xml);
		if (device_ret.type == 'response') {
			g_device_info = device_ret.response;
			g_device_info.WanIPAddress = G_MonitoringStatus.response.WanIPAddress;
			g_device_info.WanIPv6Address = G_MonitoringStatus.response.WanIPv6Address;
			if (g_device_mode == g_device_mode_2g || g_device_mode == g_device_mode_3g || g_device_mode == g_device_mode_4g) {
				g_device_info.pci = g_device_single.response.pci;
				g_device_info.sc = g_device_single.response.sc;
                                g_device_info.rssi = g_device_single.response.rssi;
                                g_device_info.ecio = g_device_single.response.ecio;
				g_device_info.rsrq = g_device_single.response.rsrq;
				g_device_info.rsrp = g_device_single.response.rsrp;
				g_device_info.sinr = g_device_single.response.sinr;
				g_device_info.rscp = g_device_single.response.rscp;
                                g_device_info.cell_id = g_device_single.response.cell_id;
			}
		} else {
			log.error('Error, no data');
		}
	}, {
		sync: true
	});
}

function getDeviceConfig() {
	getConfigData('config/deviceinformation/config.xml', function($xml) {
		var config_ret = _xml2feature($xml);
        if ('undefined' !== config_ret && null !== config_ret)
        {
			g_device_config = config_ret;
		}
	}, {
		sync: true
	});
}

function createListForDevice(_name, _value) {
	var tdName = '';
	var values = common_unknown;
	var row = '';
	switch (_name) {
		case 'DeviceName':
			tdName = system_label_device_name;
			break;

		case 'SerialNumber':
			tdName = system_label_serial_number;
			break;

		case 'Imei':
			if (g_net_mode_status == MACRO_NET_MODE_W ) {
				if (g_device_info.Imei != '') {
					tdName =system_label_imei;
				}
			}
			break;

		case 'Imsi':
			tdName = device_information_imsi;
			break;

		case 'HardwareVersion':
			tdName = system_label_hardware_version;
			break;

		case 'SoftwareVersion':
			tdName = system_label_software_version;
			break;

		case 'WebUIVersion':
			tdName = system_label_webui_version;
			break;
		case 'MacAddress1':
			tdName = wlan_label_lan_mac_address;
			break;
		case 'MacAddress2':
			if (g_device_info.MacAddress2 != '') {
				tdName = wlan_label_wan_mac_address;
			}
			break;
		case 'Iccid':
			tdName = system_label_iccid;
			break;
		case 'Msisdn':
			tdName = system_label_my_number;
			break;
		case 'ProductFamily':
			tdName = system_label_product_family;
			break;
		case 'Classify':
			tdName = system_label_classify;
			break;
		case 'WanIPAddress':
			tdName = system_label_wanip_address;
			break;
		case 'Esn' :
			if (g_net_mode_status == MACRO_NET_MODE_C ) {
				if (g_device_info.Esn != '') {
					tdName = system_label_esn;
				}
			}
			break;
		case 'Meid' :
			if (g_net_mode_status == MACRO_NET_MODE_C ) {
				if(g_device_info.Esn != '' && g_device_info.Esn.charAt(0) == '8' && g_device_info.Esn.charAt(1) == '0' ) {
					tdName = system_label_meid;
				}
			}

			break;
		case 'WanIPv6Address':
			tdName = system_label_wan_IPv6_addr;
			break;
		/************************************* ******device_single */

		case 'pci':
			if(g_device_mode == g_device_mode_4g) {
				tdName = IDS_system_label_pci;
			}
			break;
		case 'sc':
			if (g_device_mode == g_device_mode_3g) {
				tdName = IDS_system_label_sc;
                        }
			break;
		case 'rssi':
			if (g_device_mode == g_device_mode_2g || g_device_mode == g_device_mode_3g || g_device_mode ==  g_device_mode_4g) {
				tdName = IDS_system_label_rssi;
                        }
			break;
		case 'ecio':
			if (g_device_mode == g_device_mode_3g) {
				tdName = IDS_system_label_ecio;
			}
			break;
		case 'rsrq':
			if(g_device_mode == g_device_mode_4g) {
				tdName = IDS_system_label_rsrq;
			}
			break;
		case 'rsrp':
			if(g_device_mode == g_device_mode_4g) {
				tdName = IDS_system_label_rsrp;			
			}
			break;
		case 'sinr':
			if(g_device_mode == g_device_mode_4g) {
				tdName = IDS_system_label_sinr;
			}
			break;
		case 'rscp':
			if (g_device_mode == g_device_mode_3g) {
				tdName = IDS_system_label_rscp;
                        }
			break;
		case 'cell_id':
			if(g_device_mode == g_device_mode_3g || g_device_mode == g_device_mode_4g) {
				tdName = IDS_system_label_cell_id;
			}
			break;
		default:
			break;
	}
	if (tdName == '') {
		return row;
	}	
    if (tdName == system_label_my_number || tdName == wlan_label_lan_mac_address || tdName == wlan_label_wan_mac_address)
    {
		row = '<tr><td>' + tdName + common_colon + "</td><td class='info_value success_phone_number'>" + (_value == '' ? values : _value) + '</td></tr>';
    }
    else
    {
		row = '<tr><td>' + tdName + common_colon + "</td><td class='info_value'>" + (_value == '' ? values : _value) + '</td></tr>';
	}
	return row;

}

//Switch device info to display refrence device configuration xml
function setDeviceDisplay(_device_config, _device_info) {
	var list_content = '';
	var p = '';
	for (p in _device_info) {
		if (_device_config[p.toLowerCase()]) {
			if (typeof(_device_info[p]) != 'undefinded') {
				list_content += createListForDevice(p, _device_info[p]);
            }
            else {
				log.error("device dosen't exsited");
			}
		}
	}
	$('.diviceInfo_table').html(list_content);
}

function updateDeviceInfo () {
	if(g_net_mode_change ==  MACRO_NET_MODE_CHANGE) {
		getDeviceInfo();
		setDeviceDisplay(g_device_config, g_device_info);
		resetNetModeChange();
	}
}

getDeviceConfig();

$(document).ready( function() {
	getDeviceInfo();
	setDeviceDisplay(g_device_config, g_device_info);
	if(g_net_mode_type == MACRO_NET_DUAL_MODE) {
		addStatusListener('updateDeviceInfo ()');
        }
	$('#refresh').bind('click', function() {
		getDeviceInfo();
		setDeviceDisplay(g_device_config, g_device_info);
	});
});
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2016, 10:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DEFF5555,
Вы уже задавали этот вопрос и получили ответ:
Реализация автообновления параметра на странице
Склероз? Или проблемы?
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2016, 10:44
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Проблемы! По предложенном ранее методу обновляется вся страница в фоновом режиме, а не отдельный элемент.Я сначала не заметил,обрадовался,а потом при пользовании заметил что в момент обновления параметра прооисходит замирание страници,кнопок управления на 2 и более секунд, и этот метод не работает в браузере Firefox.
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2016, 12:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DEFF5555,
Сообщение от DEFF5555
Проблемы! По предложенном ранее методу обновляется вся страница в фоновом режиме, а не отдельный элемент.Я сначала не заметил,обрадовался,а потом при пользовании заметил что в момент обновления параметра прооисходит замирание страници,кнопок управления на 2 и более секунд, и этот метод не работает в браузере Firefox.
Выполняется то же самое, что и при нажатии кнопки, а именно:
getDeviceInfo();
setDeviceDisplay(g_device_config, g_device_info);

причем каждые 0.5 сек - возможно, это слишком часто и надо увеличить интервал опроса (либо пересмотреть функциональность обновления)
Если функция выполняется дольше, чем пауза setInterval, то вызовы будут происходить вообще без перерыва.
Еще советую почитать
https://learn.javascript.ru/settimeout-setinterval
http://alljs.ru/articles/timeout/setinterval

PS: больше смысла было бы продолжить предыдущую тему, а не заводить новую
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2016, 14:07
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Я пробовал увеличивать значение с 500 до 700,1000,1600,2000 при этом залипание страницы все так же происходит но интервал между зависаниями увеличивается в зависимости от выставленного интервала, а выставлять более 2000 не имеет смысла на мой взгляд,теряется вся суть автообновления данного параметра,с большим интервалом уже не очень удобно с точностью настраивать качество сигнала,большие задержки.
А что вы имеете ввиду под пересмотром функциональности обновления? И если я изменю параметр setinterval на setTimeout в предложенном вами методе,это исправит ситуацию? Или надо более детально менять скрипт? Просто я в скриптах js вообще "ноль"

Последний раз редактировалось DEFF5555, 26.04.2016 в 14:20.
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2016, 14:55
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DEFF5555,
Сообщение от DEFF5555
А что вы имеете ввиду под пересмотром функциональности обновления?
Я имею в виду содержание функций
getDeviceInfo();
setDeviceDisplay(g_device_config, g_device_info);

Проблема в том, что они выполняются не очень быстро
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2016, 15:15
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Что подскажите сделать в данной ситуации?
Я так понимаю надо координально менять скрипт? Или здесь ничего не сделать?
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2016, 15:22
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Просто на главной странице этого роутера
192.168.8.1/home.html/
Есть параметр время нахождения в сети и объем скачанных и отправленных данных,так эти параметры обновляются никак не влияя на страницу
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2016, 15:31
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DEFF5555,
напишите функции по запросу особо интересующих вас данных (а не всех параметров) и их обновляйте регулярно
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2016, 15:52
Новичок на форуме
Отправить личное сообщение для DEFF5555 Посмотреть профиль Найти все сообщения от DEFF5555
 
Регистрация: 20.04.2016
Сообщений: 8

Если бы я еще шарил в js!
Ну ладно,и на этом спасибо! За уделенное время!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заставить работать скрипт для навигации по странице при переходе извне geol.post jQuery 5 29.10.2015 13:35
Автоматическое присваивание параметра с адресной строки всем ссылкам на странице Енот Работа 2 19.01.2015 15:47
Динамическое отображение контента на 2ой странице, в зависимости от выбора на 1ой Volchen0ck Events/DOM/Window 2 14.05.2014 16:01
Переключение radiobutton на странице Дуб-Дубом Элементы интерфейса 2 24.09.2012 08:49
Не выполняется скрипт на подгружаемой странице AlThar ExtJS 1 21.01.2011 15:10